1. Field of the Invention
This invention relates to computer circuitry and, more particularly, to apparatus and a method for trapping unimplemented operations in input/output devices which include first-in first-out (FIFO) buffers.
2. History of the Prior Art
Modern computer system are typically based on an architecture which was first offered in the Digital Equipment Corporation (DEC) PDP11 computer. One problem with this architecture as with earlier IBM and CDC mainframe architectures is that writing directly to the input/output devices of the system by an application program is prohibited. Although this architecture allows all of the facilities of the central processing unit to be used for input/output, it requires that the operating system running on the central processing unit attend to all of the input/output functions using trusted code. This significantly slows any input/output operation of the computer.
In contrast to earlier mainframe systems, in this architecture there is no process by which the input/output performance of the system can be increased except by increasing the speed of the central processing unit or the input/output bus. This is an especial problem for programs which make heavy use of input output/devices such as video and game programs which manipulate graphics and high quality sound extensively.
In a modern computer, the central processing unit and the input/output devices operate at different speeds. It can be very inefficient for a modern central processing unit to wait until an input/output write operation is complete before performing the next operation which often has nothing to do with input/output. On the other hand, a central processing unit has to wait for the result of a read operation because it needs the result produced.
Since most central processing unit accesses to input/output devices are write operations, the designers of systems and input/output devices attempt to decouple the central processing unit and input/output devices as far as write operations are concerned by implementing write queues using first-in first-out (FIFO) write buffers. These buffers may appear at various places in a particular implementation: as a part of the central processing unit, as part of a bridge chip, or as part of an input/output device.
A new input/output architecture has been invented which overcomes the problems of the prior art PDP11 architecture and allows application programs to write directly to input/output devices. This architecture uses FIFO buffers at the input of an input/output control unit to allow the central processing unit and the input/output devices to be decoupled in order to increase the speed of operation. The new architecture including such a FIFO input buffer is described in U.S. Pat. No. 5,696,990, entitled Method and Apparatus for Providing Improved Flow Control For Input/Output Operations a Computer System Having a FIFO Circuit And An Overflow Storage Area, issued Dec. 9, 1997, to Rosenthal et al.
One problem raised by this new architecture is that an input/output device and the buffers supplying it must accept all information written to them over the input/output bus in order to implement the architecture. Individual input/output devices may not implement many of the commands in hardware. Some of the operations commanded may be implemented in software while other of these operations commanded may have been generated in error. Consequently, it is desirable to provide a means for handing unimplemented operations in input/output devices which include first-in first-out (FIFO) buffers.
In the new input/output architecture, it was contemplated that an application program executing on a central processor would write all commands directly to the FIFO buffers. Because of the limited size of such buffers, the variable amounts of data to be transferred, and the need for the central processor to read a register associated with the FIFO buffers in order to know whether additional commands could be written to the buffers, the process of having the central processor write directly to the FIFO and the associated I/O devices is not always fast enough.
It is desirable to provide circuitry and a method for accomplishing faster writes of data directly from an application program to I/O devices while providing means for handing unimplemented operations in input/output devices which include first-in first-out (FIFO) buffers.